+2001-03-14 HideToshi Tajima <tajima@happy.sunsoft.eng.sun.com>
+
+ * gtk/gtkimmulticontext.c (gtk_im_multicontext_set_cursor_pos):
+ * gtk/gtkimcontext.c (gtk_im_context_set_cursor_pos):
+ * gtk/gtkimcontext.h (struct _GtkIMContextClass): add
+ set_cursor_pos() virtual method
+
+ * modules/input/gtkimcontextxim.c (gtk_im_context_xim_class_init):
+ (gtk_im_context_xim_set_cursor_pos): add implementation for
+ set_cursor_pos() method
+
+ * gtk/gtkentry.c (recompute_idle_func): set current cursor
+ position to input methods
+
Mon Mar 12 21:02:08 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeview.c (gtk_tree_view_header_focus): Fix up focus
* gtk/gtktext.c (process_exposes):
Use gtk_widget_send_expose instead of gtk_widget_event.
+>>>>>>> 1.1811
Thu Mar 8 19:40:28 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeview.c (gtk_tree_view_destroy): Add destroy function.
+2001-03-14 HideToshi Tajima <tajima@happy.sunsoft.eng.sun.com>
+
+ * gtk/gtkimmulticontext.c (gtk_im_multicontext_set_cursor_pos):
+ * gtk/gtkimcontext.c (gtk_im_context_set_cursor_pos):
+ * gtk/gtkimcontext.h (struct _GtkIMContextClass): add
+ set_cursor_pos() virtual method
+
+ * modules/input/gtkimcontextxim.c (gtk_im_context_xim_class_init):
+ (gtk_im_context_xim_set_cursor_pos): add implementation for
+ set_cursor_pos() method
+
+ * gtk/gtkentry.c (recompute_idle_func): set current cursor
+ position to input methods
+
Mon Mar 12 21:02:08 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeview.c (gtk_tree_view_header_focus): Fix up focus
* gtk/gtktext.c (process_exposes):
Use gtk_widget_send_expose instead of gtk_widget_event.
+>>>>>>> 1.1811
Thu Mar 8 19:40:28 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeview.c (gtk_tree_view_destroy): Add destroy function.
+2001-03-14 HideToshi Tajima <tajima@happy.sunsoft.eng.sun.com>
+
+ * gtk/gtkimmulticontext.c (gtk_im_multicontext_set_cursor_pos):
+ * gtk/gtkimcontext.c (gtk_im_context_set_cursor_pos):
+ * gtk/gtkimcontext.h (struct _GtkIMContextClass): add
+ set_cursor_pos() virtual method
+
+ * modules/input/gtkimcontextxim.c (gtk_im_context_xim_class_init):
+ (gtk_im_context_xim_set_cursor_pos): add implementation for
+ set_cursor_pos() method
+
+ * gtk/gtkentry.c (recompute_idle_func): set current cursor
+ position to input methods
+
Mon Mar 12 21:02:08 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeview.c (gtk_tree_view_header_focus): Fix up focus
* gtk/gtktext.c (process_exposes):
Use gtk_widget_send_expose instead of gtk_widget_event.
+>>>>>>> 1.1811
Thu Mar 8 19:40:28 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeview.c (gtk_tree_view_destroy): Add destroy function.
+2001-03-14 HideToshi Tajima <tajima@happy.sunsoft.eng.sun.com>
+
+ * gtk/gtkimmulticontext.c (gtk_im_multicontext_set_cursor_pos):
+ * gtk/gtkimcontext.c (gtk_im_context_set_cursor_pos):
+ * gtk/gtkimcontext.h (struct _GtkIMContextClass): add
+ set_cursor_pos() virtual method
+
+ * modules/input/gtkimcontextxim.c (gtk_im_context_xim_class_init):
+ (gtk_im_context_xim_set_cursor_pos): add implementation for
+ set_cursor_pos() method
+
+ * gtk/gtkentry.c (recompute_idle_func): set current cursor
+ position to input methods
+
Mon Mar 12 21:02:08 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeview.c (gtk_tree_view_header_focus): Fix up focus
* gtk/gtktext.c (process_exposes):
Use gtk_widget_send_expose instead of gtk_widget_event.
+>>>>>>> 1.1811
Thu Mar 8 19:40:28 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeview.c (gtk_tree_view_destroy): Add destroy function.
+2001-03-14 HideToshi Tajima <tajima@happy.sunsoft.eng.sun.com>
+
+ * gtk/gtkimmulticontext.c (gtk_im_multicontext_set_cursor_pos):
+ * gtk/gtkimcontext.c (gtk_im_context_set_cursor_pos):
+ * gtk/gtkimcontext.h (struct _GtkIMContextClass): add
+ set_cursor_pos() virtual method
+
+ * modules/input/gtkimcontextxim.c (gtk_im_context_xim_class_init):
+ (gtk_im_context_xim_set_cursor_pos): add implementation for
+ set_cursor_pos() method
+
+ * gtk/gtkentry.c (recompute_idle_func): set current cursor
+ position to input methods
+
Mon Mar 12 21:02:08 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeview.c (gtk_tree_view_header_focus): Fix up focus
* gtk/gtktext.c (process_exposes):
Use gtk_widget_send_expose instead of gtk_widget_event.
+>>>>>>> 1.1811
Thu Mar 8 19:40:28 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeview.c (gtk_tree_view_destroy): Add destroy function.
+2001-03-14 HideToshi Tajima <tajima@happy.sunsoft.eng.sun.com>
+
+ * gtk/gtkimmulticontext.c (gtk_im_multicontext_set_cursor_pos):
+ * gtk/gtkimcontext.c (gtk_im_context_set_cursor_pos):
+ * gtk/gtkimcontext.h (struct _GtkIMContextClass): add
+ set_cursor_pos() virtual method
+
+ * modules/input/gtkimcontextxim.c (gtk_im_context_xim_class_init):
+ (gtk_im_context_xim_set_cursor_pos): add implementation for
+ set_cursor_pos() method
+
+ * gtk/gtkentry.c (recompute_idle_func): set current cursor
+ position to input methods
+
Mon Mar 12 21:02:08 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeview.c (gtk_tree_view_header_focus): Fix up focus
* gtk/gtktext.c (process_exposes):
Use gtk_widget_send_expose instead of gtk_widget_event.
+>>>>>>> 1.1811
Thu Mar 8 19:40:28 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeview.c (gtk_tree_view_destroy): Add destroy function.
+2001-03-14 HideToshi Tajima <tajima@happy.sunsoft.eng.sun.com>
+
+ * gtk/gtkimmulticontext.c (gtk_im_multicontext_set_cursor_pos):
+ * gtk/gtkimcontext.c (gtk_im_context_set_cursor_pos):
+ * gtk/gtkimcontext.h (struct _GtkIMContextClass): add
+ set_cursor_pos() virtual method
+
+ * modules/input/gtkimcontextxim.c (gtk_im_context_xim_class_init):
+ (gtk_im_context_xim_set_cursor_pos): add implementation for
+ set_cursor_pos() method
+
+ * gtk/gtkentry.c (recompute_idle_func): set current cursor
+ position to input methods
+
Mon Mar 12 21:02:08 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeview.c (gtk_tree_view_header_focus): Fix up focus
* gtk/gtktext.c (process_exposes):
Use gtk_widget_send_expose instead of gtk_widget_event.
+>>>>>>> 1.1811
Thu Mar 8 19:40:28 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeview.c (gtk_tree_view_destroy): Add destroy function.
}
}
+static void
+update_im_cursor_position (GtkEntry *entry)
+{
+ GdkRectangle area;
+ gint strong_x;
+ gint strong_xoffset;
+ gint x, y, area_width, area_height;
+
+ gtk_entry_get_cursor_locations (entry, CURSOR_STANDARD, &strong_x, NULL)
+;
+ get_text_area_size (entry, &x, &y, &area_width, &area_height);
+
+ strong_xoffset = strong_x - entry->scroll_offset;
+ if (strong_xoffset < 0)
+ {
+ strong_xoffset = 0;
+ }
+ else if (strong_xoffset > area_width)
+ {
+ strong_xoffset = area_width;
+ }
+ area.x = x + strong_xoffset;
+ area.y = y + area_height;
+ area.width = area_width;
+ area.height = area_height;
+
+ gtk_im_context_set_cursor_pos (entry->im_context, &area);
+}
+
static gboolean
recompute_idle_func (gpointer data)
{
entry->recompute_idle = FALSE;
+ update_im_cursor_position (entry);
+
return FALSE;
}
}
+/**
+ * gtk_im_context_set_cursor_pos:
+ * @context: a #GtkIMContext
+ *
+ * Notify the input method that a change in cursor
+ * position has been made.
+ **/
+void
+gtk_im_context_set_cursor_pos (GtkIMContext *context,
+ GdkRectangle *area)
+{
+ GtkIMContextClass *klass;
+
+ g_return_if_fail (context != NULL);
+ g_return_if_fail (GTK_IS_IM_CONTEXT (context));
+
+ klass = GTK_IM_CONTEXT_GET_CLASS (context);
+ if (klass->set_cursor_pos)
+ klass->set_cursor_pos (context, area);
+}
+
void (*focus_in) (GtkIMContext *context);
void (*focus_out) (GtkIMContext *context);
void (*reset) (GtkIMContext *context);
+ void (*set_cursor_pos) (GtkIMContext *context,
+ GdkRectangle *area);
};
GtkType gtk_im_context_get_type (void) G_GNUC_CONST;
void gtk_im_context_focus_in (GtkIMContext *context);
void gtk_im_context_focus_out (GtkIMContext *context);
void gtk_im_context_reset (GtkIMContext *context);
+void gtk_im_context_set_cursor_pos (GtkIMContext *context,
+ GdkRectangle *area);
#ifdef __cplusplus
}
static void gtk_im_multicontext_focus_in (GtkIMContext *context);
static void gtk_im_multicontext_focus_out (GtkIMContext *context);
static void gtk_im_multicontext_reset (GtkIMContext *context);
+static void gtk_im_multicontext_set_cursor_pos (GtkIMContext *context,
+ GdkRectangle *area);
void gtk_im_multicontext_preedit_start_cb (GtkIMContext *slave,
GtkIMMulticontext *multicontext);
im_context_class->focus_in = gtk_im_multicontext_focus_in;
im_context_class->focus_out = gtk_im_multicontext_focus_out;
im_context_class->reset = gtk_im_multicontext_reset;
+ im_context_class->set_cursor_pos = gtk_im_multicontext_set_cursor_pos;
gobject_class->finalize = gtk_im_multicontext_finalize;
}
gtk_im_context_reset (slave);
}
+static void
+gtk_im_multicontext_set_cursor_pos (GtkIMContext *context,
+ GdkRectangle *area)
+{
+ GtkIMMulticontext *multicontext = GTK_IM_MULTICONTEXT (context);
+ GtkIMContext *slave = gtk_im_multicontext_get_slave (multicontext);
+
+ if (slave)
+ gtk_im_context_set_cursor_pos (slave, area);
+}
+
void
gtk_im_multicontext_preedit_start_cb (GtkIMContext *slave,
GtkIMMulticontext *multicontext)
static void gtk_im_context_xim_reset (GtkIMContext *context);
static void gtk_im_context_xim_focus_in (GtkIMContext *context);
static void gtk_im_context_xim_focus_out (GtkIMContext *context);
+static void gtk_im_context_xim_set_cursor_pos (GtkIMContext *context,
+ GdkRectangle *area);
static void gtk_im_context_xim_get_preedit_string (GtkIMContext *context,
gchar **str,
PangoAttrList **attrs,
im_context_class->get_preedit_string = gtk_im_context_xim_get_preedit_string;
im_context_class->focus_in = gtk_im_context_xim_focus_in;
im_context_class->focus_out = gtk_im_context_xim_focus_out;
+ im_context_class->set_cursor_pos = gtk_im_context_xim_set_cursor_pos;
gobject_class->finalize = gtk_im_context_xim_finalize;
}
return;
}
+static void
+gtk_im_context_xim_set_cursor_pos (GtkIMContext *context,
+ GdkRectangle *area)
+{
+ GtkIMContextXIM *context_xim = GTK_IM_CONTEXT_XIM (context);
+ XIC ic = gtk_im_context_xim_get_ic (context_xim);
+
+ XVaNestedList preedit_attr;
+ XPoint spot;
+
+ if (!ic)
+ return;
+
+ spot.x = area->x;
+ spot.y = area->y;
+
+ preedit_attr = XVaCreateNestedList (0,
+ XNSpotLocation, &spot,
+ 0);
+ XSetICValues (ic,
+ XNPreeditAttributes, preedit_attr,
+ NULL);
+ XFree(preedit_attr);
+
+ return;
+}
+
static void
gtk_im_context_xim_reset (GtkIMContext *context)
{